import Plant from './plant';
import OneShotAnimation from '../base/one_shot_animation';
import Music from '../runtime/music';

/**
 * 皮卡丘类
 * 继承自Plant，攻击方式为找到当前僵尸x坐标最小的一个对其造成50伤害
 */
export default class Pikachu extends Plant {
  constructor(imgPrefix, frameCount = 1, width = 0, height = 0, frameInterval = 5, x = 0, y = 0, resourceLoader = null) {
    super(imgPrefix, frameCount, width, height, frameInterval, x, y, resourceLoader);
    this.attackCooldown = 60; // 攻击冷却帧数（1秒）
    this.currentCooldown = 0; // 当前冷却时间
  }

  /**
   * 更新方法
   * 处理攻击冷却和执行攻击
   */
  update() {
    super.update(); // 调用父类更新方法
    
    // 冷却时间减少
    if (this.currentCooldown > 0) {
      this.currentCooldown--;
      return;
    }
    
    // 从全局变量获取僵尸列表
    const zombies = GameGlobal.zombieManager ? GameGlobal.zombieManager.zombies : [];
    
    // 执行攻击
    this.attack(zombies);
    this.currentCooldown = this.attackCooldown; // 重置冷却
  }

  /**
   * 攻击方法
   * 找到x坐标最小的僵尸并造成50点伤害
   */
  attack(zombies) {
    if (!zombies || zombies.length === 0) return;
    
    // 找到x坐标最小的僵尸（最左边的）
    let targetZombie = zombies[0];
    for (const zombie of zombies) {
      if (zombie.x < targetZombie.x && !zombie.isDead) {
        targetZombie = zombie;
      }
    }
    
    // 对目标僵尸造成50点伤害
    targetZombie.takeDamage(50);
    
    // 创建闪电特效
    OneShotAnimation.create('images/shandian/f', 12, targetZombie.width, targetZombie.height, targetZombie.x, targetZombie.y);
    // 播放音效
    Music.getInstance().playShandian();
  }
}